{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST Prior Samples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import argparse\n",
    "import os, sys\n",
    "import time\n",
    "import tabulate\n",
    "\n",
    "import torch\n",
    "import torch.nn.functional as F\n",
    "import torchvision\n",
    "import numpy as np\n",
    "import tqdm\n",
    "\n",
    "from matplotlib import pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "from swag import data, models, utils, losses\n",
    "from swag.posteriors import SWAG\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "You are going to run models on the test set. Are you sure?\n"
     ]
    }
   ],
   "source": [
    "model_cfg = getattr(models, \"LeNet5\")\n",
    "\n",
    "loaders, num_classes = data.loaders(\n",
    "    \"MNIST\",\n",
    "    \"~/datasets/\",\n",
    "    10000,\n",
    "    4,\n",
    "    model_cfg.transform_train,\n",
    "    model_cfg.transform_test,\n",
    "    use_validation=False,\n",
    "    split_classes=None,\n",
    "    shuffle_train=False\n",
    ")\n",
    "loader = loaders[\"test\"]\n",
    "\n",
    "model = model_cfg.base(*model_cfg.args, num_classes=num_classes, **model_cfg.kwargs)\n",
    "model.cuda();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def resample(model, sigma=1):\n",
    "    for p in model.parameters():\n",
    "        p.copy_(torch.randn_like(p) * sigma)\n",
    "        \n",
    "def softmax(arr, axis=-1):\n",
    "    arr_ = arr - np.max(arr, axis=axis, keepdims=True)\n",
    "    return np.exp(arr_) / np.sum(np.exp(arr_), axis=axis, keepdims=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Preparing data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "for x, y in loader:\n",
    "    break\n",
    "    \n",
    "mask = np.zeros_like(y).astype(bool)\n",
    "classes = [0,1]\n",
    "perclass = 200\n",
    "\n",
    "for cls in classes:\n",
    "    mask_cls = np.where(y == cls)[0]\n",
    "    mask[mask_cls[:perclass]] = True\n",
    "\n",
    "x = x[mask].cuda()\n",
    "y = y[mask]\n",
    "\n",
    "idx = np.argsort(y)\n",
    "x = x[idx]\n",
    "y = y[idx]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = x[[0, -1]].float()\n",
    "d = (x[1] - x[0])[None, :]\n",
    "x = x[0][None, :]\n",
    "\n",
    "t = torch.linspace(-1, 2, 100)[:, None, None, None].cuda()\n",
    "x = (x + t * d)\n",
    "\n",
    "norms = x.norm(dim=(2,3))[:, 0]\n",
    "x *= norms[0] / norms[:, None, None, None]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([100, 1, 28, 28])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fcab2734c90>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x360 with 5 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f, arr = plt.subplots(1, 5, figsize=(15, 5))\n",
    "arr[0].imshow(x[0].data.cpu().numpy()[0])\n",
    "\n",
    "arr[1].imshow(x[37].data.cpu().numpy()[0])\n",
    "arr[2].imshow(x[50].data.cpu().numpy()[0])\n",
    "arr[2].imshow(x[60].data.cpu().numpy()[0])\n",
    "arr[3].imshow(x[70].data.cpu().numpy()[0])\n",
    "arr[4].imshow(x[99].data.cpu().numpy()[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing Samples\n",
    "Prior std: `sigma`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "all_outputs = []\n",
    "# sigma = 1e0\n",
    "# sigma = 1e-1\n",
    "sigma = 2e-2\n",
    "\n",
    "with torch.no_grad():\n",
    "    for i in range(500):\n",
    "        resample(model, sigma=sigma)\n",
    "        outputs = model(x).data.cpu().numpy()[:, :, None]\n",
    "        all_outputs.append(outputs)\n",
    "    all_outputs = np.dstack(all_outputs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#1e-2\n",
    "for sample in range(10):\n",
    "    plt.plot(all_outputs[:, 0, sample])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py37",
   "language": "python",
   "name": "py37"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
